Skip to content

fix: Update version strings and metadata for v1.5.0 release#34

Merged
ProduktEntdecker merged 1 commit intomainfrom
fix/33-version-strings-v150
Feb 27, 2026
Merged

fix: Update version strings and metadata for v1.5.0 release#34
ProduktEntdecker merged 1 commit intomainfrom
fix/33-version-strings-v150

Conversation

@ProduktEntdecker
Copy link
Copy Markdown
Owner

@ProduktEntdecker ProduktEntdecker commented Feb 27, 2026

Summary

  • Replace all hardcoded "1.3.0" version strings with dynamic Bundle.main.infoDictionary lookups
  • Fix stale date, placeholder URLs, copyright year, and LSUIElement mismatch
  • 168/168 tests passing, build verified in release mode

Changes

P1 — Version String Fixes

  • AnalyticsService.swift: 3 occurrences of "1.3.0" → dynamic from Bundle
  • SharingManager.swift: 2 occurrences of "1.3.0" → dynamic from Bundle
  • TouchBarManager.swift: Log output version → dynamic from Bundle
  • ContentView.swift: Remove hardcoded "Jan 2026" from version footer

P2 — Metadata Fixes

  • OnboardingView.swift: "Welcome to TouchBarFix 1.3!" → "Welcome to TouchBarFix!"
  • ReviewRequestManager.swift: Replace placeholder App Store URL with Gumroad product page
  • Info.plist: Copyright "2024" → "2024-2026", LSUIElement true → false

Test plan

  • swift build -c release passes
  • swift test — 168/168 tests pass, 0 failures
  • Manual UAT: launch app, verify version footer shows "v1.5.0"
  • Manual UAT: verify review button opens Gumroad page

Closes #33

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Updates
    • Copyright year extended to 2026.
    • Simplified onboarding welcome message.
    • Removed trailing date from version footer display.
    • Updated review flow to redirect to Gumroad platform.
    • Enhanced version tracking with dynamic app version information.

Replace all hardcoded "1.3.0" version strings with dynamic
Bundle.main.infoDictionary lookups to stay in sync with Info.plist.

P1 fixes:
- AnalyticsService: version in payloads and User-Agent headers
- SharingManager: version in analytics payloads and User-Agent
- TouchBarManager: version in restart log output
- ContentView: remove hardcoded "Jan 2026" from version footer

P2 fixes:
- OnboardingView: remove version number from welcome title
- ReviewRequestManager: replace placeholder App Store URL with
  Gumroad product page, remove non-existent /review fallback
- Info.plist: update copyright to 2024-2026
- Info.plist: set LSUIElement to false (matches .regular policy)

Closes #33

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 27, 2026

📝 Walkthrough

Walkthrough

This PR updates version strings, metadata, and UI text for the v1.5.0 release. Changes include replacing hardcoded version "1.3.0" with dynamic CFBundleShortVersionString across analytics and logging, removing hardcoded dates from UI, updating copyright year range, adjusting review fallback redirects, and refreshing onboarding text.

Changes

Cohort / File(s) Summary
Version Metadata
App/Resources/Info.plist
Updated copyright year range from "2024" to "2024-2026"; changed LSUIElement from true to false to align with regular activation policy.
Dynamic Version Handling
App/Sources/AnalyticsService.swift, App/Sources/SharingManager.swift, App/Sources/TouchBarManager.swift
Replaced hardcoded version strings "1.3.0" and "TouchBarFix 1.3.0" with dynamic values read from CFBundleShortVersionString (fallback "1.5.0") in analytics payloads, User-Agent headers, and log statements.
UI Text Updates
App/Sources/ContentView.swift, App/Sources/OnboardingView.swift
Removed hardcoded "• Jan 2026" date from version footer in ContentView; changed onboarding title from "Welcome to TouchBarFix 1.3!" to "Welcome to TouchBarFix!"
Review Flow
App/Sources/ReviewRequestManager.swift
Changed review fallback URL from App Store review path to Gumroad product page, removing nested fallback logic.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Possibly related PRs

Poem

🐰 The version hops from "1.3" to "1.5" with grace,
No hardcoded strings in every single place,
Copyright now spans two years so bright,
Analytics dance with dynamic light,
TouchBar's heart beats true and right! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the main objective: updating version strings and metadata for the v1.5.0 release, which aligns with all changes across the codebase.
Linked Issues check ✅ Passed All P1 and P2 coding requirements from issue #33 are met: version strings replaced with dynamic Bundle lookups [#33], hardcoded date removed [#33], onboarding text updated [#33], review URL changed [#33], and plist metadata corrected [#33].
Out of Scope Changes check ✅ Passed All changes directly support the v1.5.0 release objectives; no unrelated modifications detected across the modified files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/33-version-strings-v150

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
App/Sources/AnalyticsService.swift (1)

97-97: Consider extracting repeated version lookup to a computed property.

The Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0" pattern appears three times in this file (lines 73, 97, 135). Extracting to a private computed property would improve maintainability.

Suggested refactor
 class AnalyticsService: ObservableObject {
+    private var appVersion: String {
+        Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0"
+    }
+
     `@Published` var totalFixesGlobal: Int = 0

Then use appVersion in place of the repeated lookups.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@App/Sources/AnalyticsService.swift` at line 97, Extract the repeated
Bundle.main.infoDictionary lookup into a single private computed property (e.g.,
private var appVersion: String {
Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0"
}) inside the AnalyticsService type, then replace the three inline occurrences
(the User-Agent header construction in request.setValue(...) and the other two
spots) with appVersion so the default fallback remains "1.5.0" and all
references use the single source of truth.
App/Sources/ReviewRequestManager.swift (1)

2-2: Remove unused StoreKit import.

The StoreKit import at line 2 is no longer needed. With the switch to the Gumroad direct link approach using NSWorkspace.shared.open(url), no StoreKit APIs are invoked anywhere in the file. The import can be safely removed.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@App/Sources/ReviewRequestManager.swift` at line 2, Remove the unused StoreKit
import: delete the solitary "import StoreKit" statement so the file no longer
imports StoreKit; verify that ReviewRequestManager uses the Gumroad direct-link
flow (NSWorkspace.shared.open(url)) and that no StoreKit symbols are referenced
anywhere in the file, then rebuild to confirm no unused-import or
unresolved-symbol warnings remain.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@App/Sources/ContentView.swift`:
- Line 175: The displayed app version fallback in ContentView's
Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ??
"1.0")") is inconsistent with other files; update the fallback string from "1.0"
to "1.5.0" so ContentView matches AnalyticsService, SharingManager, and
TouchBarManager and consistently shows "v{version}" when
CFBundleShortVersionString is missing.

---

Nitpick comments:
In `@App/Sources/AnalyticsService.swift`:
- Line 97: Extract the repeated Bundle.main.infoDictionary lookup into a single
private computed property (e.g., private var appVersion: String {
Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0"
}) inside the AnalyticsService type, then replace the three inline occurrences
(the User-Agent header construction in request.setValue(...) and the other two
spots) with appVersion so the default fallback remains "1.5.0" and all
references use the single source of truth.

In `@App/Sources/ReviewRequestManager.swift`:
- Line 2: Remove the unused StoreKit import: delete the solitary "import
StoreKit" statement so the file no longer imports StoreKit; verify that
ReviewRequestManager uses the Gumroad direct-link flow
(NSWorkspace.shared.open(url)) and that no StoreKit symbols are referenced
anywhere in the file, then rebuild to confirm no unused-import or
unresolved-symbol warnings remain.

ℹ️ Review info

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between c256832 and 3b1bb32.

📒 Files selected for processing (7)
  • App/Resources/Info.plist
  • App/Sources/AnalyticsService.swift
  • App/Sources/ContentView.swift
  • App/Sources/OnboardingView.swift
  • App/Sources/ReviewRequestManager.swift
  • App/Sources/SharingManager.swift
  • App/Sources/TouchBarManager.swift


// Version footer
Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0") • Jan 2026")
Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0")")
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Inconsistent fallback version string.

The fallback value "1.0" differs from other files in this PR which use "1.5.0" (AnalyticsService, SharingManager, TouchBarManager). Consider aligning for consistency.

Suggested fix
-            Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0")")
+            Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0")")
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.0")")
Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "1.5.0")")
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@App/Sources/ContentView.swift` at line 175, The displayed app version
fallback in ContentView's
Text("v\(Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ??
"1.0")") is inconsistent with other files; update the fallback string from "1.0"
to "1.5.0" so ContentView matches AnalyticsService, SharingManager, and
TouchBarManager and consistently shows "v{version}" when
CFBundleShortVersionString is missing.

@ProduktEntdecker ProduktEntdecker merged commit 26fded2 into main Feb 27, 2026
2 checks passed
@ProduktEntdecker ProduktEntdecker deleted the fix/33-version-strings-v150 branch February 27, 2026 09:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix: Update version strings and metadata for v1.5.0 release (TOU-76)

1 participant